﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Elysium.Demo;
using SIIE_ERP.Codigo;
using System.Data;
using SIIE_ERP.BaseDatos.Configuracion;
using SIIE_ERP.BaseDatos.Configuracion.Empresa;
using SIIE_ERP.BaseDatos;

namespace Elysium.Demo.Configuracion.Empresa.FacturacionElectronica
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class FE_Conf2 : UserControl
    {
        UsuarioActivo _sesion;
        List<CSerie> series;

        ////////////////////////////////////////////////////////////////////////////
        //  PROPIEDADES DE NAVEGACION
        public string Texto { get { return _texto; } }
        public TabControl TabControlPadre { get { return _tabControlPadre; } }
        public TabItem TabItemPadre { get { return _tabItemPadre; } }

        private string _texto;
        private TabControl _tabControlPadre;
        private TabItem _tabItemPadre;

        public void setParametros(string Texto, ref TabControl tabControl, ref TabItem tabItem)
        {
            this._texto = Texto; this._tabControlPadre = tabControl; this._tabItemPadre = tabItem;
        }


        private void ButtonRegresar_Click(object sender, RoutedEventArgs e)
        {
            _tabControlPadre.Items.Remove(_tabItemPadre);
        }
        // FIN DE PROPIEDADES DE NAVEGACION
        ///////////////////////////////////////////////////////////////////////////

        public FE_Conf2(ref UsuarioActivo usuario)
        {
            InitializeComponent();
            this._sesion = usuario;
            CargarDatos();
        }

        private void CargarDatos()
        {
            series = new List<CSerie>();

            var db = new SIIE_ERP.BaseDatos.Configuracion.dbo_Cat_Empresa_Serie(_sesion.RFC, _sesion.UserName);
            var seriesdb = db.Get_Empresa_Seriees().Rows;

            foreach (DataRow s in seriesdb)
            {
                var NuevoFolio = s["V_Factura"].ToString();
                var V_Factura = (Double.Parse(s["V_Factura"].ToString()) - 1).ToString();
                var Id = s["Id_Serie"].ToString();
                var Nombre = s["Nombre"].ToString();

                series.Add(new CSerie(Id, Nombre, V_Factura, NuevoFolio));
            }

            SeriesDataGrid.ItemsSource = series;
        }

        public class CSerie
        {
            public string Id { get; set; }
            public string Nombre { get; set; }
            public string V_Factura { get; set; }
            public string NuevoFolio { get; set; }

            public CSerie(string Id, string Nombre, string V_Factura, string NuevoFolio)
            {
                this.Id = Id;
                this.V_Factura = V_Factura;
                this.NuevoFolio = NuevoFolio;
                this.Nombre = Nombre;
            }
        }

        private void ButtonInformacion_Click_1(object sender, RoutedEventArgs e)
        {
            WindowAyuda Ayuda = new Elysium.Demo.WindowAyuda("FacturaElectronica.htm", "Ayuda");
            Ayuda.Owner = SIIE_ERP.View.NavegacionUI.GetParentWindow(this); Ayuda.ShowDialog();
        }

        private void SeriesDataGrid_CellEditEnding_1(object sender, DataGridCellEditEndingEventArgs e)
        {
            CSerie serie = e.Row.Item as CSerie;
            TextBox editado = e.EditingElement as TextBox;

            int nuevoValor = 0;

            try
            {
                nuevoValor = Int32.Parse(editado.Text);
            }
            catch (Exception)
            {
                MessageBox.Show("El valor debe ser numérico.");
                editado.Text = (Int32.Parse(serie.V_Factura) + 1).ToString();
                return;
            }
        }

        private void Button_Guardar_Click(object sender, RoutedEventArgs e)
        {
            List<CSerie> MiLista = (List<CSerie>)SeriesDataGrid.ItemsSource;

            foreach (CSerie s in MiLista)
            {
                dbo_Cat_Empresa_Serie.Update_Empresa_Serie_Alta_FE(Int32.Parse(s.Id), Int32.Parse(s.NuevoFolio));
            }

            dbo_Cat_Empresa_Datos_Factura dbo_s = new dbo_Cat_Empresa_Datos_Factura(_sesion.RFC, _sesion.UserName);
            Respuesta r = dbo_s.Update_Empresa_Datos_Factura_Finish_FE();

            if (r.Id == 1)
            {
                ((ScrollViewer)this.Parent).Content = new FE_Conf3(ref _sesion);
            }
            else
            {
                MessageBox.Show(r.Mensaje);
            }
        }


    }
}
